package org.project.single.utils;

import cn.hutool.core.util.ObjectUtil;
import org.project.single.pojo.dto.CreateUserInfoDto;
import org.project.single.pojo.dto.OptUserInfoDto;
import org.project.single.pojo.dto.UpdateUserInfoDto;

import java.util.Date;

/**
 * 入库对象操作工具
 */
public class PoUtil {
    /**
     * 插入实体初始化相关信息
     * @param po
     * @param date
     */
    public static void initInsert(Object po, Date date){
        String userKey = LoginHelper.getUserKey();
        date = ObjectUtil.isNotNull(date)?date:new Date();
        
        if (po instanceof OptUserInfoDto){
            ((OptUserInfoDto)(po)).setCreateUser(userKey);
            ((OptUserInfoDto)(po)).setUpdateUser(userKey);
            ((OptUserInfoDto)(po)).setCreateTime(date);
            ((OptUserInfoDto)(po)).setUpdateTime(date);
        }else if (po instanceof CreateUserInfoDto){
            ((CreateUserInfoDto)(po)).setCreateUser(userKey);
            ((CreateUserInfoDto)(po)).setCreateTime(date);
        }else if (po instanceof UpdateUserInfoDto){
            ((UpdateUserInfoDto)(po)).setUpdateUser(userKey);
            ((UpdateUserInfoDto)(po)).setUpdateTime(date);
        }
    }

    /**
     * 更新实体初始化相关信息
     * @param po
     * @param date
     */
    public static void initUpdate(Object po, Date date){
        String userKey = LoginHelper.getUserKey();
        date = ObjectUtil.isNotNull(date)?date:new Date();

        if (po instanceof OptUserInfoDto){
            ((OptUserInfoDto)(po)).setUpdateUser(userKey);
            ((OptUserInfoDto)(po)).setUpdateTime(date);
        }else if (po instanceof UpdateUserInfoDto){
            ((UpdateUserInfoDto)(po)).setUpdateUser(userKey);
            ((UpdateUserInfoDto)(po)).setUpdateTime(date);
        }
    }
}
